﻿#ifndef OPT_LED_H
#define OPT_LED_H

#include <QObject>
#include "./include/OPTController.h"
#include "./include/OPTErrorCode.h"
#include "../MCLampControl.h"


// 广东省奥普特科技股份有限公司的光源控制器的控制代码。
class OptmvLampControl : public MCLampControl
{
public:
    OptmvLampControl();
    ~OptmvLampControl();

    enum CONN_TYPE{ NONE, SERIALPORT, ETHERNET };
    /**
     * @brief connectBySerialPort  通过串口连接奥普特的光源控制器
     * @param port 端口号，比如 "COM1"
     * @return
     */
    bool connectBySerialPort(QString port);

    /**
     * @brief connectByIP 通过 IP 地址连接奥普特的光源控制器
     * @param ip IP 地址，比如 "192.168.1.2"
     * @return
     */
    bool connectByIP(QString ip);

    /**
     * @brief connectByName 通过光源控制器的序列号连接奥普特的光源控制器。只有网口连接的控制器有这个功能。
     * @param name 控制器的序列号 serial number
     * @return
     */
    bool connectByName(QString name);
    /**
     * @brief close 关闭连接
     * @return
     */
    bool close();

    int value(int channel) Q_DECL_OVERRIDE;
    bool setValue(int channel, int intensity) Q_DECL_OVERRIDE;
    bool valueRange(int channel, int &min, int &max) Q_DECL_OVERRIDE;
    bool setEnable(int channel, bool on) Q_DECL_OVERRIDE;

private:
    CONN_TYPE m_type;
    OPTController_Handle m_handle;
};


#endif // OPT_LED_H
